#------------------------------------------------------------------------------#
#  This software is under GPL license. You can find one copy of this license   #
#  in the sub-directory doc with this source code.                             #
#  In any use, publication or copy it's mandatory attach one copy of license   #
#  and the following notice:                                                   #
#                                                                              #
#                      (C) COPYRIGHT 2011 Andrea Tosoni                        #
#                             ALL RIGHTS RESERVED                              #
#                                                                              #
#  The entire notice above must be reproduced on all copies.                   #
#                                                                              #
#  -- Title:               ls completo di una directory                        #
#  -- Project:             IceMirror          											 #
#  -- Author:              Andrea Tosoni <ludoteca.vesuvio@gmail.com>          #
#  -- Date:                30.12.2011                                          #
#  -- Version:             1.0                                                 #
#  -- Description:                                                       		 #
#                                                                              #
#------------------------------------------------------------------------------#

package provide servizi 1.0

namespace eval ::iceMirror {
}

namespace eval ::iceMirror::servizi {
}

#-----------------------------------------------------------------------------#
#	locDir	percorso																				#
#-----------------------------------------------------------------------------#
# Funzione che restituisce l'intero contenuto della directory						#
# ricevuta in ingresso																			#
#-----------------------------------------------------------------------------#
#	percorso		directory di cui si vuole conoscere il contenuto					#
#-----------------------------------------------------------------------------#
# La funzione restituisce una lista con i file e le directory contenuti nella #
# directory ricevuta in ingresso.															#
#-----------------------------------------------------------------------------#
proc ::iceMirror::servizi::locDir {percorso} {

	return [glob -directory $percorso -tails -nocomplain *]
}

#-----------------------------------------------------------------------------#
#	ls-R	percorso																					#
#-----------------------------------------------------------------------------#
# Funzione che restituisce la lista completa dei file .tcl presenti				#
# nella directory ricevuta in ingresso scendendo ricorsivamente nelle			#
# directory interne. I nomi dei file contengono il percorso relativo.			#
#-----------------------------------------------------------------------------#
#	percorso			directory di cui si vuole conoscere ricorsivamente il			#
#						contenuto in file .tcl													#
#-----------------------------------------------------------------------------#
# Viene restituita una lista dei file .tcl con il percorso relativo alla		#
# directory ricevuta in ingresso.															#
#-----------------------------------------------------------------------------#

proc ::iceMirror::servizi::ls-R {percorso {estensione "*"}} {
	
	set elenco ""
	set tmpElenco [locDir $percorso]

	while {[llength $tmpElenco] > 0} {
		
		set corrente [lindex $tmpElenco 0]
		set tmpElenco [lreplace $tmpElenco 0 0]

		if {[file isfile [file join $percorso $corrente]] == 1} {

			if {[string match $estensione [file extension $corrente]] == 1} {
				lappend elenco $corrente
			}
		
		} else {

			set locPath [file join $percorso $corrente]
			set nuovi [locDir $locPath]
			foreach elem $nuovi {
				lappend tmpElenco [file join $corrente $elem]
			}
		}
	}

	return $elenco
}

#-----------------------------------------------------------------------------#

namespace eval ::iceMirror::servizi {

	namespace export ls-R
}

#------------------------------------------------------------------------------#
# $Id:$
# 
# $Log:$
#------------------------------------------------------------------------------#

